ποΈGitΠ―ΡΠ°ποΈ
Node / meshtastic / Meshtastic-Android / files / specs / 20260507-161858-app-docs-markdown / quickstart.md
specs/20260507-161858-app-docs-markdown/quickstart.md docs/obtainium-generated-deeplinks (42f311dd) Text, 4.05 KB
Quickstart: App Documentation (Android/KMP)
Prerequisites
β’ JDK 21
β’ Android SDK (T383838ANDROID_HOME set or discoverable)
β’ Git submodules initialized
β’ T383838local.properties present (T383838cp secrets.defaults.properties local.properties if needed)
β’ Ruby + Bundler only if you want to preview Jekyll locally
β’ No Node.js requirement
1. Bootstrap the workspace
T282828
git submodule update --init
Tff7b72[ -f local.properties Tff7b72] Tff7b72|| cp secrets.defaults.properties local.properties
2. Author or edit docs content
Markdown source lives in:
β’ T383838docs/user/*.md
β’ T383838docs/developer/*.md
Example frontmatter:
T282828
---
title: Messages & Channels
nav_order: 3
aliases:
Tff7b72- channels
Tc9d1d9 - direct-messages
Tc9d1d9---
Tc9d1d9# Messages & Channels
3. Generate the bundled docs corpus
T282828
./gradlew generateDocsBundle validateDocsBundle
Expected outputs:
β’ generated HTML for Android/Web docs parity
β’ optional markdown mirror for Compose renderers
β’ T383838index.json keyword index
β’ shared CSS and callout styling
β’ size/schema/asset validation
4. Build the GitHub Pages site artifact locally
T282828
./gradlew publishDocsSite -Pdocs.channelTff7b72=beta
This should produce a deployable T383838_site/ tree with T383838/beta/ output.
5. Refresh screenshot assets
Preferred path if Roborazzi is used:
T282828
./gradlew recordDocsScreenshots
If the project adopts Paparazzi instead, run the equivalent Paparazzi record task defined by the implementation.
6. Run docs-specific tests
T282828
./gradlew :feature:docs:allTests :feature:docs:detekt
./gradlew kmpSmokeCompile
7. Run full repo verification before shipping
T282828
./gradlew spotlessCheck detekt assembleDebug Tffa657test allTests generateDocsBundle validateDocsBundle
8. Preview the Jekyll site locally (optional)
T282828
Tffa657cd docs
bundle Tffa657exec jekyll serve --livereload
T8b949e# open http://127.0.0.1:4000
Recommended gems:
T282828
gem install bundler jekyll just-the-docs jekyll-redirect-from
9. Test the in-app route
Open the app and navigate to:
β’ Settings β Help & Documentation
Deep link contract:
T282828
meshtastic://meshtastic/settings/helpDocs
Optional specific-page form:
T282828
meshtastic://meshtastic/settings/helpDocs/messages-and-channels
10. Verify target-specific behavior
Android
β’ Docs open in a WebView-backed page renderer
β’ T383838google flavor on supported Android 14+ devices may show Chirpy AI
β’ T383838fdroid flavor must still show keyword search and docs pages
Desktop / iOS
β’ Docs open through the shared renderer abstraction
β’ Keyword search works even when AI is unsupported
Key file locations
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β Path β Purpose β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ€
β T383838docs/ β Authored markdown content and site config β
β T383838feature/docs/ β New KMP feature module for in-app docs β
β T383838core/navigation/src/commonMain/kotlin/org/meshtastiβ¦ β Typed docs routes β
β T383838core/navigation/src/commonMain/kotlin/org/meshtastiβ¦ β Deep-link mapping β
β T383838feature/settings/src/commonMain/kotlin/org/meshtastβ¦ β Settings entry point β
β T383838build-logic/convention/.../DocsTasks.kt β Gradle docs pipeline β
β T383838.github/workflows/docs-deploy.yml β Continuous beta docs deploy β
β T383838.github/workflows/docs-release.yml β Versioned release deploy β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ
Troubleshooting
T383838generateDocsBundle fails on markdown parsing
Check frontmatter syntax, unsupported attribute lines, and table formatting.
T383838validateDocsBundle reports missing assets
Confirm every referenced screenshot exists in the generated or curated asset set.
AI assistant not visible on Android
Check device support, Android version, flavor (T383838google only), and runtime model availability.
Desktop/iOS page looks different from Android
Confirm whether the renderer is using HTML or markdown mode and compare against the generated HTML output.
Bundle size exceeds 10 MB
Trim screenshots, compress assets, or reduce duplicated artifacts before raising the limit.
Served by rngit 1.5.0 - Generated in 0.06s